package com.hnchances.studentscoresystem.dto.request;

import lombok.Data;

import java.math.BigDecimal;

/**
 * 成绩修改请求DTO
 * 对应接口：/grades/update（有鉴权，老师权限）
 * 功能：老师修改本班级学生成绩，仅允许修改成绩分数及部分关联信息
 */
@Data
public class GradesUpdateDTO {

    /**
     * 成绩ID（唯一标识，定位待修改成绩）
     * 约束：非空（匹配数据库grades表id字段，必传参数）
     */
    private Long gradesId;

    /**
     * 课程ID（新课程ID，关联course表id）
     * 约束：可空，若传值需与班级匹配（匹配数据库grades表courseID字段）
     */
    private Integer courseID;

    /**
     * 考试ID（新考试ID，关联exam表id）
     * 约束：可空，若传值需为有效考试（匹配数据库grades表examID字段）
     */
    private Integer examID;

    /**
     * 成绩分数（新成绩，替换原分数）
     * 约束：可空，若传值范围0-100（匹配数据库grades表grades字段）
     */
    private BigDecimal grades;

    /**
     * 操作人ID（修改成绩的老师ID，用于权限校验）
     * 约束：非空（后端也可通过Token解析获取，匹配数据库user表id字段）
     */
    private Long operatorId;

    /**
     * 操作人班级ID（修改成绩的老师所属班级，用于校验“仅修改本班级成绩”）
     * 约束：非空（匹配数据库user表classID字段，确保与成绩班级ID一致）
     */
    private Integer operatorClassId;
}